#!/bin/bash

#============================================
# 接收参数
# 格式：
# ./params.sh 1 2 3
#============================================

echo "第一个参数为文件名:$0" # 这个叫位置参数
echo "第二个参数为:$1"
echo "第三个参数为:$2"
echo "第十个参数为:${10}" #参数>9个时，数字要加{}

# 遍历参数
echo '遍历参数（多个参数当成一个参数输出）: '
for para in "$*"
do
    echo $para
    num=`expr ${num} + 1`
done
echo "循环了${num}次"

# "$*"与"$@"的区别在于："$*"把多个参数当成一个参数输出，"$@"当成多个参数输出
echo '遍历参数（多个参数当成多个参数输出）: '
num=0
for para in "$@"
do
    echo $para
    num=`expr ${num} + 1`
done
echo "循环了${num}次"

# 统计参数个数
echo "一共传递了${#}个参数"

#read命令
#参数说明：
# -p 输入提示文字
# -n 输入字符长度限制(达到n位，自动结束)
# -t 输入限时，单位为s
# -s 隐藏输入内容

while true
do
    read -p "请输入两个数字（用空格隔开）:" a b
    expr $a + 0 &> /dev/null # &>的意思是，无论是正确还是错误信息，都不输出在屏幕上
    [ $? -ne 0 ] && continue  #  $? 的意思是，获取上一条命令的执行返回结果，是1还是0，0一般为正常情况
    expr $b + 0 &> /dev/null
    [ $? -ne 0 ] && continue || break # 两个或多个语句用&& ||连接判断，PHP跟shell是一样的
done
echo "a+b=$((a + b))"

while true
do
    read -p "请输入用户名:" -n 20 userName
    printf "\n"
    #len=${#userName}
    [ ${#userName} -lt 20 ] && continue || break  #expr length "$userName"
done

while true
do
    read -p "请输入密码: " -n 6 -t 10 -s password
    printf "\n"
    #len=${#password}
    [ ${#password} -lt 6 ] && continue || break
done
printf "\n" #换行
echo "用户名为: $userName"
echo "密码为: $password"
